iT邦幫忙

2026 iThome 鐵人賽

DAY 8
0
IT Operation

網路為什麼筆記本:從一個封包開始,把 Router、Switch 與 Routing 串起來系列 第 8

Day 08|Static Route 不夠用怎麼辦?第一次搞懂 OSPF、Cost 與 ECMP

  • 分享至 

  • xImage
  •  

Day 07 解決了一個問題:

Routing Table 裡有很多條 Route 時,Router 怎麼選?

答案是先找出符合 Destination IP 的 Route,再選 Longest Prefix Match。

但是~~

Routing Table 裡的 Route,到底是誰放進去的?

之前做 Static Route,是自己手動設定:

ip route 192.168.30.0 255.255.255.0 10.0.0.2

意思是:

要去 192.168.30.0/24,就先交給 10.0.0.2。

小網路可以這樣做。但 Router 變成幾十台,或某條線突然斷掉,難道還要一台一台登入修改?

這就是 Dynamic Routing Protocol 要處理的問題,也是今天第一次真正碰到 OSPF 的地方。


Static Route 不會自己找出另一條路

假設 R1 到 R3 有兩條路:

R1 → R2 → R3
R1 → R4 → R3

如果只設定主要走 R2,後來 R1 和 R2 之間斷線,Router 不會因此自動「發明」一條經過 R4 的 Route。

工程師可以事先設定備援 Static Route,也可以使用 Dynamic Routing Protocol,讓 Router 交換路由資訊並重新計算路徑。

差別可以先記成:

Static Route
→ 人告訴 Router 怎麼走

Dynamic Routing
→ Router 交換資訊,自動學路與重新算路

Static Route 並不是不好,而是每一條路都要由人規劃與維護。網路越大,維護成本就越高。


OSPF 負責學路、算路

OSPF 全名是:

Open Shortest Path First

目前先把它翻成人話:

Router 交換網路的 Link-State 資訊,各自算出通往目的網段的路徑。

當網路拓撲改變,例如原本的路斷掉,OSPF 會重新計算仍然可達的路徑。

但 OSPF 不是負責把 Packet 搬到終點。更精確的流程是:

OSPF 學路、算路
↓
計算結果進入 Routing Table
↓
Packet 到達 Router
↓
Router 查 Routing Table
↓
Longest Prefix Match
↓
Forwarding

所以 Day 07 的 Longest Prefix Match 沒有被 OSPF 取代。

OSPF 負責產生 Route;Packet 真正進來後,Router 還是查 Routing Table 做 Forwarding。


Shortest 不是經過最少的 Router

看到 Shortest Path First,我以為是:

經過的 Router 越少越好。

但 OSPF 比較的是整條路徑累積的 Cost。

例如:

Path A:5 + 10 + 5 = 20
Path B:8 + 8 = 16

即使兩條路經過的 Router 數量不同,OSPF 仍會偏好總 Cost 較低的 Path B。

所以 Shortest 指的不是地圖上的距離,也不是 Router 數量,而是:

哪條路徑的累積 Cost 最低。


Cost 和頻寬有關,但不等於頻寬

在 Cisco 常見的 OSPF 計算方式中:

OSPF Cost
= Reference Bandwidth ÷ Interface Bandwidth

若 Reference Bandwidth 是 100 Mbps:

10 Mbps  → Cost 10
100 Mbps → Cost 1

大方向是:

頻寬越高
→ Cost 越低
→ OSPF 越偏好

但 Cost 不是頻寬本身,而是 OSPF 用來比較路徑的 Metric。

傳統 Reference Bandwidth 是 100 Mbps,因此 100 Mbps、1 Gbps、10 Gbps 的 Cost 都可能被算成 1,無法區分高速介面。

這時可以提高 Reference Bandwidth,例如設成 10000 Mbps:

100 Mbps → Cost 100
1 Gbps   → Cost 10
10 Gbps  → Cost 1

重點不是背數字,而是理解:

Reference Bandwidth 決定 OSPF 用什麼尺度比較介面速度。

實際調整時,各台 OSPF Router 應使用一致的 Reference Bandwidth,避免算出不一致的 Cost。


Cost 不是即時路況

假設一條 1 Gbps 的線路,目前已經用了 980 Mbps。

OSPF 不會因為這一刻很塞,就自動提高它的 Cost。

Cost ≠ 即時流量
Cost ≠ Ping
Cost ≠ Latency

Cost 是 OSPF 的選路 Metric,不是即時交通偵測器。

工程師也可以手動設定介面 Cost:

interface GigabitEthernet0/1
 ip ospf cost 50

例如讓主要線路 Cost 10、備援線路 Cost 100,OSPF 平常就會偏好主要線路。

查看介面 Cost 與 OSPF Route,可以使用:

show ip ospf interface
show ip route ospf

Routing Table 裡可能看到:

O 192.168.30.0/24 [110/20] via 10.0.0.2

目前先認得後面的 20 是 OSPF Metric。前面的 110 是 Administrative Distance,留到後面再拆。


如果兩條路一樣便宜呢?

假設通往同一個目的網段有兩條路:

Path A:Total Cost = 10
Path B:Total Cost = 10

這時就會碰到 ECMP:

Equal-Cost Multi-Path

也就是到同一個目的地,有多條總 Cost 相同的路徑。

OSPF 可以把多條等成本路徑放進 Routing Table,讓 Router 使用它們進行 Forwarding。

可以把 ECMP 記成一句:

一樣便宜,就不一定只能留一條路。

至於流量怎麼分散,以及不同設備能保留幾條等成本路徑,之後再拆。


Day 08 我們真正接起來的事

Routing Table 不是 OSPF,也不只會放 OSPF Route。

裡面的 Route 可能來自:

Connected
Static
OSPF
其他 Routing Protocol

OSPF 只是 Route 的來源之一。

把 Day 07 和 Day 08 接起來,完整流程就是:

OSPF 學路、算路
↓
較低 Cost 的 Route 進入 Routing Table
↓
Packet 到達 Router
↓
Longest Prefix Match
↓
Forwarding

如果有多條相同 Prefix、相同 Cost 的 OSPF 路徑,則可能形成 ECMP。


Day 08 過關標準

看到:

Path A:1 + 1 + 1 = 3
Path B:2 + 2 = 4

即使 Path A 經過比較多段,也應該知道 OSPF 會偏好 Path A,因為它比較的是累積 Cost,不是 Router 數量。


上一篇
Day 07|Router 有很多條路時怎麼選?從 /25 到 Longest Prefix Match
下一篇
Day 09|OSPF Router 是怎麼認識彼此的?Hello、Neighbor、Adjacency
系列文
網路為什麼筆記本:從一個封包開始,把 Router、Switch 與 Routing 串起來9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言